/*
* Author:      Marco Kuiper (http://www.marcofolio.net/)
*              Sylvain Papet (http://www.com-ocean.com/)
*/

(function($) {
    $.bgimgSlideshow = {version: '1.0.0'};

    $.fn.bgimgSlideshow = function(options) {
        options = jQuery.extend({
            slideshowSpeed: 6000,
            photos : [],
            markup: '\
            <div id="bis_images">\
            <div id="bis_image1" class="bis_image"></div>\
            <div id="bis_image2" class="bis_image"></div>\
            </div>',
            butlink : '',
            elemtobuild : ''
        },options);

        var interval;
        var activeContainer = 1;	
        var currentImg = 0;
        var started = false;
        var animating = false;
        var currentZindex = -1;

        var image_cache = [];

        $.bgimgSlideshow.preLoadImage = function() {
            var args_len = arguments.length;
            for (var i = args_len; i--;) {
                var cacheImage = document.createElement('img');
                cacheImage.src = arguments[i];
                image_cache.push(cacheImage);
            }
        }

        $.bgimgSlideshow.preLoadPhotoObjects = function(photoObjects) {
            for(i in photoObjects)
                {
                $.bgimgSlideshow.preLoadImage(photoObjects[i].image, photoObjects[i].image);
            }
        }

        $.bgimgSlideshow.initialize = function() {

            $(options.elemtobuild).html(options.markup);
            $.bgimgSlideshow.preLoadPhotoObjects(options.photos);

            $.bgimgSlideshow.startSlideshow();
        };

        $.bgimgSlideshow.navigate = function(direction) {
            // Check if no animation is running. If it is, prevent the action
            if(animating) {
                return;
            }

            // Check which current image we need to show
            if(direction == "next") {
                currentImg++;
                if(currentImg == options.photos.length + 1) {
                    currentImg = 1;
                }
            } else {
                currentImg--;
                if(currentImg == 0) {
                    currentImg = photos.length;
                }
            }

            // Check which container we need to use
            var currentContainer = activeContainer;
            if(activeContainer == 1) {
                activeContainer = 2;
            } else {
                activeContainer = 1;
            }

            $.bgimgSlideshow.showImage((currentImg - 1), currentContainer, activeContainer);
        };

        $.bgimgSlideshow.showImage = function(numImg, currentContainer, activeContainer) {
            var photoObject = options.photos[numImg];
            animating = true;

            // Make sure the new container is always on the background
            currentZindex--;

            // Set the background image of the new active container
            $("#bis_image" + activeContainer).css({
                "background-image" : "url(" + photoObject.image + ")",
                "display" : "block",
                "z-index" : currentZindex
            });

            if(photoObject.url)
                {
                $("#bis_caption p").html('<a href="'+photoObject.url+'" target="_blank">'+photoObject.title+'</a>');
            }
            else
                {
                $("#bis_caption p").html(photoObject.title);
            }

            // Fade out the current container
            // and display the header text when animation is complete
            $("#bis_image" + currentContainer).fadeOut(function() {
                setTimeout(function() {
                    animating = false;
                }, 500);
            });
        };

        $.bgimgSlideshow.stopSlideshow = function() {
            // Change the background image to "play"
            $("#bis_control").css({ "background-image" : "url("+options.butlink+"btn_play.png)" });
            // Clear the interval
            clearInterval(interval);
            started = false;
        };

        $.bgimgSlideshow.startSlideshow = function() {
            $("#bis_control").css({ "background-image" : "url("+options.butlink+"btn_pause.png)" });
            $.bgimgSlideshow.navigate("next");
            interval = setInterval(function() { $.bgimgSlideshow.navigate("next"); }, options.slideshowSpeed);
            started = true;
        };    

        $.bgimgSlideshow.initialize();
        
        return this;
    }

})(jQuery);
